﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Drawing;
using LinkShareWpf.Properties;

namespace UniCT.LinkShareWpf.Model
{
    // La decorazione [DataContract]: si tratta di un oggetto che viene utilizzato all'interno del contratto
    // (definisce metodi e oggetti scambiati nella comunicazione). 
    // Questo perché potrebbero esserci dei campi che nella comunicazione non interessano:
    // in quel caso, se non si mette la decorazione DataMember essi non vengono presi in considerazione. 
    [DataContract]
    public class NetResource : Resource
    {

        #region Private
        // DataMember indica le proprietà o i campi che vogliamo serializzare
        [DataMember]
        private Guid id;
        [DataMember]
        private Uri sender;
        [DataMember]
        private byte[] imageBuffer;
        #endregion

        #region Properties
        public Guid Id
        {
            get { return id; }
            set { id = value; }
        }

        public Uri Sender
        {
            get { return sender; }
            set { sender = value; }
        }

        public byte[] ImageBuffer
        {
            get { return imageBuffer; }
            set { imageBuffer = value; }
        }

         public NetResource()
          {
          }

        #endregion
        
        public NetResource(Resource resource) : base(resource)
        {
            Sender = Settings.Default.UriServer;
        }

        public void SetImageBuffer()
        {
            string photolocation = Settings.Default.CoversPath + "\\" + CInfo.CoverName;
            try
            {
                ImageBuffer = File.ReadAllBytes(photolocation);
            }
            catch (Exception exception)
            {
                Console.WriteLine("NetResource.NetResource( ... ):\n" + exception.Message + "\n" + exception.InnerException);
            }
        }

    }
}
